# 列表 增 删 改 查
"""list.insert(索引, 数据)"""
# 说明: 指定索引位置添加数据
"""
索引(下标):
每一个元素都有自己的一个序号
索引从左至右从0开始, 从右至左从-1开始
"""
list1 = ['python', 'mysql', 'linux']
list1.insert(0, 'git')
print(list1)

list1.insert(-1, 'shell')
print(list1)

print('==' * 20)

"""
list.append(数据)
说明: 列表末尾追加数据
"""
# list2 = ['python', 'mysql']
# list2.append('linux')
# print(list2)

print('==' * 20)
"""
list.extend(容器)
说明: 将容器中的元素依次追加到列表末尾
"""

list3 = ['python', 'mysql']
list3.extend('linux')
print(list3)
list3.extend(['shell', 'git'])
print(list3)
print('==' * 20)

"""
del 通用语句
del list['python', 'mysql']
根据下标删除指定元素
"""

list1 = ['python', 'mysql', 'python', 'shell']
del list1[3]
print(list1)
print('==' * 20)
list1.remove('python')
print(list1)

print('==' * 20)
# TODO list.pop([index])
"""
没有参数,弹出列表中的最后一个元素.
设置下标, 根据索引删除弹出元素.
弹出: 删除并返回
"""
list1 = ['python', 'mysql', 'linux', 'shell']
# 没有参数
print(list1.pop())
print(list1)
# 有参数
print(list1.pop(1))
print(list1)

print(list1.pop(-2))
print(list1)

print('==' * 20)

# TODO list.clear()
# 说明: 清空列表
list1 = ['python', 'mysql', 'linux', 'git']
print(list1)
list1.clear()
print(list1)

print('==' * 20)
# TODO 查询
# 下标(索引)
"""
元素在列表中的位置序号: 下标
从左至右从0开始, 从右至左从-1开始
通过下标找到对应的元素
中括号方式
语法: list[index]
"""
list1 = ['python', 'mysql', 'linux', 'mysql']
print(list1[1])
"""
查询数据第一次出现的索引
list.index(元素)
判断元素是否在列表中, 如果不存在抛出错误
"""
print(list1.index('mysql'))
# print(list1.index('git'))  # 不存在抛出错误

print('==' * 20)
# TODO len(容器)
# list
list1 = ['python', 'mysql', 'linux', 'git']
print(len(list1))
# str(字符串)
print(len('hello'))

# TODO 修改
# 语法: list1[index] = value
# 说明: 修改指定索引的数据
list1 = ['python', 'mysql', 'linux', 'git']
list1[1] = 'shell'
print(list1)

print('==' * 30)

# TODO 排序 list.sort()类型不同不能排序
# 升序: 从小到大
list1 = [10, 11, 20, 3, 9, 35]
print(list1)
list1.sort()
print(list1)
# 降序: 从大到小
# list.sort(reverse=True)
list1.sort(reverse=True)
print(list1)

print('==' * 30)
# 问题
list1 = [10, 11, 20, 3, 9, 35]
# list.pop()
print(list1.pop())  # 没有下标删除最后一个元素 35
print(list1)

list1 = [10, 11, 20, 3, 9, 35]
# list.sort()
list1.sort()
print(list1)
print(list1.index(10))  # 下标2

